home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / texte / jane152 / scl / dir.scl next >
Text File  |  1998-10-29  |  2KB  |  69 lines

  1. # Diese Zeile ist erforderlich, damit der Aufruf von 'dlist' in 'main'
  2. # den Compiler nicht verwirrt.
  3. forward dlist(path, prefix);
  4.  
  5. # Einfache Testumgebung für den Makro 'dlist'
  6. main()
  7. {    lprint("Bitte geben Sie den Namen des Wurzelordners ein:");
  8.     wurzel = inputline();
  9.     if ( wurzel != '' )
  10.     {    dlist(wurzel // '\*', '');
  11.     }
  12. }
  13.  
  14. # Dieser Makro gibt den Inhalt eines Ordners in das 'SCEleton-Fenster' aus. Dabei
  15. # werden auch alle Unterordner dieses Ordners angezeigt. Die Schachtelung wird durch
  16. # Einrückung kenntlich gemacht.
  17. # Dieser makro demonstriert die Verzeichnsfunktionen 'Fsfirst' und 'Fsnext'
  18. # sowie eine praktische Anwendung der Rekursion in SCEleton.
  19. dlist(path, prefix)
  20. {    
  21.     # Wenn 'prefix' leer ist, dann sind wir auf der obersten Ebene,
  22.     # also Überschrift ausgeben. 
  23.     if ( prefix == '' )
  24.         lprint("Dateibaum ab %s:", path);
  25.  
  26.     # Jetzt fängt die Suche nach passenden Dateien an.
  27.     l = Fsfirst(path);
  28.  
  29.     # Zuerst testen, ob überhaupt etwas gefinden wurde.
  30.     if ( l != $$$ )
  31.     {    
  32.         # Falls ja, dann fängt die Suchschleife an.
  33.         do
  34.         {    
  35.             # Datum und Uhrzeit von Sekundenzahl in lesbaren Text wandeln.
  36.             str = formattime(l[3], "%X %x");
  37.  
  38.             # Alle erhaltenen Informationen über die Datei ausgeben:
  39.             # Namen, Ordnerkennung, Größe, Datum, Uhrzeit, Attribute.
  40.             # Dabei wird dem Namen 'prefix' vorangestellt, um die Einrückung zu erzeugen.
  41.             lprint("%-40s %1d %10d %17s %2x", prefix // l[0], l[1], l[2], str, l[4]);
  42.  
  43.             # Testen, ob die Datei ein Ordner war.
  44.             if ( l[1] == 1 )
  45.             {    
  46.                 # Falls ja, den Namen an den Suchpfad anhängen, um diesen Ordner
  47.                 # durchsuchen zu können.
  48.                 l2 = splitname(path);
  49.                 l2[0] = l2[0] // '\' // l[0];
  50.                 p2 = makename(l2[0], l2[1], l2[2]);
  51.  
  52.                 # Jetzt wird dieser Ordner durch einen rekursiven Selbstaufruf von 'dlist'
  53.                 # angezeigt. Dabei wird 'prefix' um ein Leerzeichen verlängert, damit der
  54.                 # Ordnerinhalt tiefer eingerückt ist.
  55.                 dlist(p2, prefix // ' ');
  56.             }
  57.  
  58.             # Die nächste Datei im aktuellen Ordner suchen.
  59.             l = Fsnext();
  60.         }
  61.         # Wenn die Rückgabe leer ist, dann gibt es nichts mehr.
  62.         while ( l != $$$ );
  63.     }
  64.     # Falls wir auf der obersten Ebene sind, Ende der Liste anzeigen.
  65.     if ( prefix == '' )
  66.         lprint('*** Ende ***');
  67. }
  68.  
  69.